package appbenedictoxvi;

import java.util.ArrayList;

public class AdmLocal {

    private ArrayList<Local> locales;
    
    public AdmLocal() {
     locales= new ArrayList<Local>();
    }

    public ArrayList<Local> getLocales() {
        return locales;
    }

    public void setLocales(ArrayList<Local> locales) {
        this.locales = locales;
    }
    
    public void registrarLocal(String cod_local, String nom_local) throws BusinessException
    {
        validarDatos(cod_local, nom_local);
        //Crear un nuevo local
        Local local = new Local(cod_local, nom_local);
        //Adicionar el nuevo local a la colección
        locales.add(local);
    }

    public Local buscarLocal(String cod_local) 
    {
        for (Local local : locales) {
            if (local.getCod_local().equals(cod_local)) {
                return local;
            }
        }
        return null;
    }

    private void validarDatos(String cod_local, String nom_local) throws BusinessException
    {
        validarDatosMandatorios(cod_local, nom_local);
        validarDuplicidad(cod_local);
    }

    private void validarDatosMandatorios(String cod_local, String nom_local) throws BusinessException
    {
        String mensaje = "";
        if (cod_local == null || cod_local.isEmpty()) {
            mensaje += "\n Código no puede ser vacio.";
        }
        if (nom_local == null || nom_local.isEmpty()) {
            mensaje += "\n Nombre no pueder ser vacio.";
        }
        if (!mensaje.isEmpty()) {
            throw new BusinessException(mensaje);
        }
    }

    private void validarDuplicidad(String cod_local) throws BusinessException
    {
        Local local = buscarLocal(cod_local);
        if (local != null) {
            String mensaje = "Código : " + cod_local + " duplicado.";
            throw new BusinessException(mensaje);
        }
    }

    public void eliminarLocal(String cod_local) throws BusinessException
    {
        Local local = buscarLocal(cod_local);
        if (local != null){
            locales.remove(local);
           
        } else {
            ValidarEliminacionDeUnLocalInexistente(cod_local);  
        }
    }

    private void ValidarEliminacionDeUnLocalInexistente(String cod_local) throws BusinessException 
    {
        Local local = buscarLocal(cod_local);
        if (local == null) {
            String mensaje = "Local a eliminar con código " + cod_local + " no existe.";
            throw new BusinessException(mensaje);
        }
    }
    
    public void modificarLocal(String cod_local, String nom_local)
    {
        Local local = buscarLocal(cod_local);
        if (local != null) {
           local.setNom_local(nom_local);          
        }
    }
}
